import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.*;
/**
 * Write a description of class sonicAzul here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class sonicAzul extends Monos
{
  /**
   * Act Metodo el cual se va a encargar de mandar todos los mensajes para poder realizar los metodos
   * 
   */
        
     int cont=1;
    public void act() 
    {   
     Mundo w=(Mundo) super.getWorld();
     w.V=(super.vidas);
     if(w.Nivel==3)
     if(getY()>350){
         w.V3--;
     setLocation(100,200);}
     
     super.cargaImagenes();
      if( gravedad());
     cambia(); 
     cambiaImagen();
     
    if(super.recogeMoneda()){
      w.dineroAzul+=1;
    }
     
    if(w.Nivel==1)
     if(w.dineroAzul==10&&w.V<9){
     super.vidas++;
     w.dineroAzul=0;
     }else
     if(w.dineroAzul==10)
      w.dineroAzul=0;
      
    if(w.Nivel==2)
     if(w.dineroAzul==10&&w.V2<9){
     w.V2++;
     w.dineroAzul=0;
     }else
     if(w.dineroAzul==10)
      w.dineroAzul=0;
      
     if(w.Nivel==3)
     if(w.dineroAzul==10&&w.V3<9){
     w.V3++;
     w.dineroAzul=0;
     }else
     if(w.dineroAzul==10)
      w.dineroAzul=0;
     
    if(super.compara("Fuego")||super.compara("Aceite")||super.compara("Rojo"))
    {  
       if(w.Nivel==2)
       w.V2--;
       if(w.Nivel==3)
       w.V3--;
       move(3);
       super.vidas--;
       Greenfoot.delay(5);
       setLocation(50, 277);
    }
        
  } 

   /**
    * cambia Metodo que se encarga de cambiar la secuencia de imagenes
    * como son el de brincar, caminar
    * @param No lleva
    */ 
    public  void cambia()
    {
       if(Greenfoot.isKeyDown("i")&& (Greenfoot.isKeyDown("l")||Greenfoot.isKeyDown("j")))
      salta();
       else
       if(Greenfoot.isKeyDown("i") &&super.compara("escalera"))
       {
        setImage(saltos[17]);
        setLocation(getX(),getY()- 10);
        Greenfoot.delay(1);
       }
      else
      if(Greenfoot.isKeyDown("i")&&(super.compara("liso")))
        saltar();
       else
      if(Greenfoot.isKeyDown("j"))
      super.cambiaIzquierda();
       else
      if(Greenfoot.isKeyDown("l"))
       super.moverDerecha();
       else
     if(imagen<5|| !gravedad())
     super.imagen=1;
       else
       if(imagen<9)
     super.imagen=5;
    }
    
    /**
     * gravedad metodo que se encarga de verificar si esta inserseccionando con el piso
     * @param No lleva parametros
     * @return Regresa verdadero si hay interseccion
     */
  public boolean gravedad()
  {
    if(!super.compara("liso"))
    { 
      super.imagen=14;
      setLocation(getX(),getY()+5);
      return true;
    }  
    return false;
  }
  /**
   * salta metodo que se encarga de poner la secuencia de imagenes
   * para ver como saltaba
   * @param No lleva parametros
   */
    public void salta()
    {
     int aumento,au=8;
     int alto=6;
     if(imagen<5)
     aumento=au;
     else
     aumento=-au;
     
    for(int i=0;i<5;i++)
    {
     setImage(saltoAzul[i]);
     setLocation(getX()+aumento,getY()-(i+alto));
     Greenfoot.delay(1);
    }
    
    for(int i=0;i<6;i++)
    {
     setImage(saltoAzul[i+5]);
     setLocation(getX()+aumento,getY()+(i+alto));
     Greenfoot.delay(1);
     if(!super.compara("liso"))
     i++;
    }
}
/**
 * saltar Metodo que se encarga de asignar a la variable imagen un numero
 * especifica
 */
     public void saltar()
    {
      imagen=10;
    }
    /**
     * cambiaImagen Metodo que se encarga de colocar todas las secuencias de imagenes
     * la de brincar saltar caminar etc
     */
    public  void cambiaImagen()
    {
       switch(super.imagen)
        {  
            case 1:setImage(imagenes[0]);
            break;
            
            case 2:setImage(imagenes[1]);  
            break;
            
            case 3:setImage(imagenes[2]);  
            break; 
            
            case 4:setImage(imagenes[3]);
            break; 
            
             case 5:setImage(imagenes[4]);
            break;
            
            case 6:setImage(imagenes[5]);  
            break;
            
            case 7:setImage(imagenes[6]);  
            break; 
            
            case 8:setImage(imagenes[7]);
            break; 
            
            case 10:setImage(saltos[16]);
                    setLocation(getX(),getY()-30);
            break; 
            
            case 14:setImage(saltos[16]);
            break; 
        }
    } 
}
